# 将配置信息封装到config类中
import logging
from datetime import timedelta

from redis import Redis


class Config:
    DEBUG = True  # 开启调试模式
    SQLALCHEMY_DATABASE_URI = "mysql://root:mysql@127.0.0.1:3306/p23"  # 数据库连接地址
    # 数据库类型 用户 密码   IP        端口 数据库名
    SQLALCHEMY_TRACK_MODIFICATIONS = False  # 是否追踪数据库变化
    REDIS_HOST = "127.0.0.1"  # redis绑定的IP，可以自定义配置key封装到config类中
    REDIS_PORT = 6379  # redis监听的端口
    SESSION_TYPE = "redis"  # 设置session的存储方式
    SESSION_REDIS = Redis(host=REDIS_HOST, port=REDIS_PORT)  # 设置redis操作对象
    SESSION_USE_SIGNER = True  # 设置session是否加密
    SECRET_KEY = "JubxNCXNdlO3KYBrn1Zo+kqxl+PyXBronXnuAQpIJzLDDj0MI4J2ZWMhOZqqayzd"  # 设置应用密匙，对session进行加密
    PERMANENT_SESSION_LIFETIME = timedelta(days=7)  # 设置session过期时间


class DevelopmentConfig(Config):  # 开发环境：开发阶段需要的测试环境
    DEBUG = True
    REDIS_HOST = "127.0.0.1"
    LOG_LEVEL = logging.DEBUG

class ProductionConfig(Config):  # 生产环境：项目上线后所需要的环境
    DEBUG = False
    # REDIS_HOST = "XXX.XXX.XXX.XXX"
    LOG_LEVEL = logging.ERROR


# 记录配置类型和配置子类的对应关系
config_dict = {
    "dev": DevelopmentConfig,
    "pro": ProductionConfig
}
